(Также вы можете найти Пример Maven'изированного приложения OpenXava на google code)
Как вы, наверное, уже знаете, OpenXava интенсивно использует сборочные скрипты Ant. Мы расскажем, как можно использовать Maven для построения портлетов OpenXava для использования в Java Portal'ах. Ниже описанная конфигурация оттестирована с релизом OpenXava 4m2.
Сначала необходимо скачать свежий дистрибутив maven 2. Затем создайте pom.xml в папке, где расположен build.xml вшего проекта. Например, для проекта MySchool это будет папка workspace/MySchool. Пример содержимого файла pom.xml:
<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.openxava.school</groupId><artifactId>MySchool</artifactId><name>MySchool</name><packaging>war</packaging><version>1.0-SNAPSHOT</version><url>http://openxava.org</url><repositories><repository><id>ibiblio</id><name>Ibilbio</name><url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url></repository><repository><id>com.springsource.repository.bundles.release</id><name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name><url>http://repository.springsource.com/maven/bundles/release</url></repository><repository><id>com.springsource.repository.bundles.external</id><name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name><url>http://repository.springsource.com/maven/bundles/external</url></repository><repository><id>com.springsource.repository.bundles.milestone</id><name>SpringSource Enterprise Bundle Repository - External Bundle Milestones</name><url>http://repository.springsource.com/maven/bundles/milestone</url></repository><!-- required for some plugins that depend on snapshots :( --><repository><id>com.springsource.repository.bundles.snapshot</id><name>SpringSource Enterprise Bundle Repository - External Bundle Snapshots</name><url>http://repository.springsource.com/maven/bundles/snapshot</url></repository><repository><id>com.springsource.repository.bundles.external.snapshots</id><name>SpringSource Enterprise Bundle Repository - Third Party External Bundle Snapshots</name><url>http://private.repository.springsource.com.s3.amazonaws.com/maven/bundles/external</url></repository><repository><id>jboss-maven2</id><url>http://repository.jboss.com/maven2</url></repository></repositories><pluginRepositories><pluginRepository><id>com.springsource.repository.bundles.release</id><name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name><url>http://repository.springsource.com/maven/bundles/release</url></pluginRepository><pluginRepository><id>com.springsource.repository.bundles.external</id><name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name><url>http://repository.springsource.com/maven/bundles/external</url></pluginRepository><pluginRepository><id>com.springsource.repository.bundles.milestone</id><name>SpringSource Enterprise Bundle Repository - External Bundle Milestones</name><url>http://repository.springsource.com/maven/bundles/milestone</url></pluginRepository></pluginRepositories><dependencies><!-- General dependencies for standard applications --><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>5.1</version><classifier>jdk15</classifier><scope>test</scope></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.3</version><scope>provided</scope></dependency><dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version><scope>provided</scope></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.4</version></dependency><dependency><groupId>net.sourceforge.cssparser</groupId><artifactId>cssparser</artifactId><version>0.9.5</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.9</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency><dependency><groupId>jta</groupId><artifactId>jta</artifactId><version>1.0.1b</version></dependency><dependency><groupId>nekohtml</groupId><artifactId>nekohtml</artifactId><version>1.9.6.2</version></dependency><dependency><groupId>portlet-api</groupId><artifactId>portlet-api</artifactId><version>1.0</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.4</version><scope>provided</scope></dependency><dependency><groupId>xalan</groupId><artifactId>xalan</artifactId><version>2.7.0</version></dependency><dependency><groupId>xerces</groupId><artifactId>xercesImpl</artifactId><version>2.8.1</version></dependency><!-- hibernate integration with JPA --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-tools</artifactId><version>3.2.0.ga</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>3.2.1.ga</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-annotations</artifactId><version>3.2.1.ga</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-commons-annotations</artifactId><version>3.0.0.ga</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>ejb3-persistence</artifactId><version>3.3.2.Beta1</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>3.0.0.ga</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate</artifactId><version>3.2.2.ga</version></dependency><dependency><groupId>asm</groupId><artifactId>asm</artifactId><version>1.5.3</version></dependency><dependency><groupId>poi</groupId><artifactId>poi</artifactId><version>2.5.1-final-20040804</version></dependency><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.1.2</version></dependency><dependency><groupId>commons-validator</groupId><artifactId>commons-validator</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>1.4</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.2</version></dependency><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4</version></dependency><dependency><groupId>org.directwebremoting</groupId><artifactId>dwr</artifactId><version>2.0.3</version></dependency><dependency><groupId>jasperreports</groupId><artifactId>jasperreports</artifactId><version>3.5.3</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.0.3</version></dependency><dependency><groupId>oro</groupId><artifactId>oro</artifactId><version>2.0.8</version></dependency><dependency><groupId>dnsjava</groupId><artifactId>dnsjava</artifactId><version>2.0.1</version></dependency><dependency><groupId>jboss</groupId><artifactId>jboss-ejb-api</artifactId><version>4.2.0.GA</version></dependency><dependency><groupId>javax.ejb</groupId><artifactId>ejb-api</artifactId><version>3.0</version></dependency><dependency><groupId>javax.inject</groupId><artifactId>javax.inject</artifactId><version>1</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.7</version></dependency><dependency><groupId>net.sourceforge.htmlunit</groupId><artifactId>htmlunit</artifactId><version>2.7</version></dependency><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.0.0.GA</version></dependency></dependencies><build><finalName>MySchool</finalName><sourceDirectory>${basedir}/src/</sourceDirectory><resources><resource><directory>persistence/</directory><filtering>true</filtering></resource><resource><directory>xava/</directory><filtering>true</filtering></resource><resource><directory>i18n/</directory><filtering>true</filtering></resource></resources><testResources><testResource><directory>src/</directory><filtering>true</filtering></testResource></testResources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.0.2</version><configuration><source>1.6</source><target>1.6</target><encoding>ISO-8859-1</encoding></configuration></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>build-helper-maven-plugin</artifactId><executions><execution><phase>generate-resources</phase><goals><goal>add-resource</goal></goals><configuration><resources><resource><directory>${basedir}/../OpenXava/bin</directory></resource></resources></configuration></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-help-plugin</artifactId><version>2.1</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-clean-plugin</artifactId><version>2.2</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.2</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.4.3</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.0</version><configuration><webResources><resource><!-- this is relative to the pom.xml directory --><directory>web/</directory></resource></webResources></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.0.4</version><configuration><attach>true</attach></configuration><executions><execution><goals><goal>jar</goal></goals></execution></executions></plugin><!-- Other --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-install-plugin</artifactId><version>2.2</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>2.4</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-release-plugin</artifactId><version>2.0-beta-7</version></plugin><!-- IDE --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-eclipse-plugin</artifactId><!-- WARNING: Do not use 2.6 or above due to http://jira.codehaus.org/browse/MECLIPSE-538 --><version>2.5.1</version><configuration><downloadSources>true</downloadSources><downloadJavadocs>false</downloadJavadocs><wtpversion>2.0</wtpversion><additionalBuildcommands><buildCommand><name>org.eclipse.ajdt.core.ajbuilder</name><arguments><aspectPath>org.springframework.aspects</aspectPath></arguments></buildCommand><buildCommand><name>org.springframework.ide.eclipse.core.springbuilder</name></buildCommand></additionalBuildcommands><additionalProjectnatures><projectnature>org.eclipse.ajdt.ui.ajnature</projectnature><projectnature>org.springframework.ide.eclipse.core.springnature</projectnature></additionalProjectnatures></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-idea-plugin</artifactId><version>2.2</version><configuration><downloadSources>true</downloadSources><dependenciesAsLibraries>true</dependenciesAsLibraries></configuration></plugin><!-- Site --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-site-plugin</artifactId><version>2.0-beta-7</version></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>tomcat-maven-plugin</artifactId></plugin><plugin><groupId>org.mortbay.jetty</groupId><artifactId>maven-jetty-plugin</artifactId><version>6.1.10</version></plugin></plugins></build></project>
Затем из командной строки введите команду:
mvn clean install
В результате будет создана папка target. в данной папке будет размещен файл MySchool.war. Скопируйте даннй файл в папку tomcat/webapps/ и запустите tomcat. Теперь можно посмотреть, как работает веб приложение MySchool. Не забудьте, что для корректной работы приложения MySchool необходимо настроить источник данных JNDI и сконфигурировать БД (подробная информация об этом дана в учебнике).
Использование Maven
(Также вы можете найти Пример Maven'изированного приложения OpenXava на google code)Как вы, наверное, уже знаете, OpenXava интенсивно использует сборочные скрипты Ant. Мы расскажем, как можно использовать Maven для построения портлетов OpenXava для использования в Java Portal'ах. Ниже описанная конфигурация оттестирована с релизом OpenXava 4m2.
Сначала необходимо скачать свежий дистрибутив maven 2. Затем создайте pom.xml в папке, где расположен build.xml вшего проекта. Например, для проекта MySchool это будет папка workspace/MySchool. Пример содержимого файла pom.xml:
Затем из командной строки введите команду:
mvn clean install
В результате будет создана папка target. в данной папке будет размещен файл MySchool.war. Скопируйте даннй файл в папку tomcat/webapps/ и запустите tomcat. Теперь можно посмотреть, как работает веб приложение MySchool. Не забудьте, что для корректной работы приложения MySchool необходимо настроить источник данных JNDI и сконфигурировать БД (подробная информация об этом дана в учебнике).